.\"	$NetBSD: nl_langinfo.3,v 1.20 2011/04/14 05:50:49 jruoho Exp $
.\"
.\" Written by J.T. Conklin <jtc@NetBSD.org>.
.\" Public domain.
.\"
.Dd April 14, 2011
.Dt NL_LANGINFO 3
.Os
.Sh NAME
.Nm nl_langinfo
.Nd get locale information
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
.In langinfo.h
.Ft char *
.Fn nl_langinfo "nl_item item"
.Sh DESCRIPTION
The
.Fn nl_langinfo
function returns a pointer to a string containing information
set by the program's locale.
.Pp
The names and values of
.Fa item
are defined in
.In langinfo.h .
The entries under Category indicate in which
.Xr setlocale 3
category each item is defined.
.Bl -column ERA_D_T_FMT LC_MESSAGES
.It Sy Constant Ta Sy Category Ta Sy Meaning
.It CODESET	LC_CTYPE	Codeset name
.It D_T_FMT	LC_TIME	String for formatting date and time
.It D_FMT	LC_TIME	Date format string
.It T_FMT	LC_TIME	Time format string
.It T_FMT_AMPM	LC_TIME	A.M. or P.M. time format string
.It AM_STR	LC_TIME	Ante-meridiem affix
.It PM_STR	LC_TIME	Post-meridiem affix
.It DAY_1	LC_TIME	Name of the first day of the week (e.g.: Sunday)
.It DAY_2	LC_TIME	Name of the second day of the week (e.g.: Monday)
.It DAY_3	LC_TIME	Name of the third day of the week (e.g.: Tuesday)
.It DAY_4	LC_TIME	Name of the fourth day of the week (e.g.: Wednesday)
.It DAY_5	LC_TIME	Name of the fifth day of the week (e.g.: Thursday)
.It DAY_6	LC_TIME	Name of the sixth day of the week (e.g.: Friday)
.It DAY_7	LC_TIME	Name of the seventh day of the week (e.g.: Saturday)
.It ABDAY_1	LC_TIME	Abbreviated name of the first day of the week
.It ABDAY_2	LC_TIME	Abbreviated name of the second day of the week
.It ABDAY_3	LC_TIME	Abbreviated name of the third day of the week
.It ABDAY_4	LC_TIME	Abbreviated name of the fourth day of the week
.It ABDAY_5	LC_TIME	Abbreviated name of the fifth day of the week
.It ABDAY_6	LC_TIME	Abbreviated name of the sixth day of the week
.It ABDAY_7	LC_TIME	Abbreviated name of the seventh day of the week
.It MON_1	LC_TIME	Name of the first month of the year
.It MON_2	LC_TIME	Name of the second month
.It MON_3	LC_TIME	Name of the third month
.It MON_4	LC_TIME	Name of the fourth month
.It MON_5	LC_TIME	Name of the fifth month
.It MON_6	LC_TIME	Name of the sixth month
.It MON_7	LC_TIME	Name of the seventh month
.It MON_8	LC_TIME	Name of the eighth month
.It MON_9	LC_TIME	Name of the ninth month
.It MON_10	LC_TIME	Name of the tenth month
.It MON_11	LC_TIME	Name of the eleventh month
.It MON_12	LC_TIME	Name of the twelfth month
.It ABMON_1	LC_TIME	Abbreviated name of the first month
.It ABMON_2	LC_TIME	Abbreviated name of the second month
.It ABMON_3	LC_TIME	Abbreviated name of the third month
.It ABMON_4	LC_TIME	Abbreviated name of the fourth month
.It ABMON_5	LC_TIME	Abbreviated name of the fifth month
.It ABMON_6	LC_TIME	Abbreviated name of the sixth month
.It ABMON_7	LC_TIME	Abbreviated name of the seventh month
.It ABMON_8	LC_TIME	Abbreviated name of the eighth month
.It ABMON_9	LC_TIME	Abbreviated name of the ninth month
.It ABMON_10	LC_TIME	Abbreviated name of the tenth month
.It ABMON_11	LC_TIME	Abbreviated name of the eleventh month
.It ABMON_12	LC_TIME	Abbreviated name of the twelfth month
.It ERA	LC_TIME	Era description segments
.It ERA_D_FMT	LC_TIME	Era date format string
.It ERA_D_T_FMT	LC_TIME	Era date and time format string
.It ERA_T_FMT	LC_TIME	Era time format string
.It ALT_DIGITS	LC_TIME	Alternative symbols for digits
.It RADIXCHAR	LC_NUMERIC	Radix character
.It THOUSEP	LC_NUMERIC	Separator for thousands
.It YESEXPR	LC_MESSAGES	Affirmative response expression
.It NOEXPR	LC_MESSAGES	Negative response expression
.\".It CRNCYSTR	LC_MONETARY	Local currency symbol
.El
.Sh RETURN VALUES
.Fn nl_langinfo
returns a pointer to an empty string if
.Fa item
is invalid.
.Sh EXAMPLES
The following example uses
.Fn nl_langinfo
to obtain the date and time format for the current locale:
.Pp
.Bd -literal -offset indent
#include \*[Lt]time.h\*[Gt]
#include \*[Lt]langinfo.h\*[Gt]
#include \*[Lt]locale.h\*[Gt]

int main(void)
{
	char datestring[100];
	struct tm *tm;
	time_t t;
	char *ptr;

	t = time(NULL);
	tm = localtime(\*[Am]t);
	(void)setlocale(LC_ALL, "");
	ptr = nl_langinfo(D_T_FMT);
	strftime(datestring, sizeof(datestring), ptr, tm);
	printf("%s\en", datestring);
	return (0);
}
.Ed
.\" .Pp
.\" The following example uses
.\" .Fn nl_langinfo
.\" to obtain the setting of the currency symbol for the current locale:
.\" .Pp
.\" .Bd
.\" 	#include \*[Lt]langinfo.h\*[Gt]
.\" 	#include \*[Lt]locale.h\*[Gt]
.\" 	int main(void)
.\" 	{
.\" 		char *ptr;
.\" 		(void)setlocale(LC_ALL, "");
.\" 		ptr = nl_langinfo(CRNCYSTR);
.\" 		printf("%s", ptr);
.\" 	}
.\" .Ed
.Sh SEE ALSO
.Xr setlocale 3 ,
.Xr tm 3 ,
.Xr nls 7
.Sh STANDARDS
The
.Fn nl_langinfo
function conforms to
.St -p1003.1-2001 .
.Sh HISTORY
The
.Fn nl_langinfo
function appeared in
.Nx 1.0 .
